home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / SCSL / sormbr.z / sormbr
Encoding:
Text File  |  2002-10-03  |  6.2 KB  |  199 lines

  1.  
  2.  
  3.  
  4. SSSSOOOORRRRMMMMBBBBRRRR((((3333SSSS))))                                                          SSSSOOOORRRRMMMMBBBBRRRR((((3333SSSS))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      SORMBR - VECT = 'Q', SORMBR overwrites the general real M-by-N matrix C
  10.      with SIDE = 'L' SIDE = 'R' TRANS = 'N'
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE SORMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK,
  14.                         LWORK, INFO )
  15.  
  16.          CHARACTER      SIDE, TRANS, VECT
  17.  
  18.          INTEGER        INFO, K, LDA, LDC, LWORK, M, N
  19.  
  20.          REAL           A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
  21.  
  22. IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN
  23.      These routines are part of the SCSL Scientific Library and can be loaded
  24.      using either the -lscs or the -lscs_mp option.  The -lscs_mp option
  25.      directs the linker to use the multi-processor version of the library.
  26.  
  27.      When linking to SCSL with -lscs or -lscs_mp, the default integer size is
  28.      4 bytes (32 bits). Another version of SCSL is available in which integers
  29.      are 8 bytes (64 bits).  This version allows the user access to larger
  30.      memory sizes and helps when porting legacy Cray codes.  It can be loaded
  31.      by using the -lscs_i8 option or the -lscs_i8_mp option. A program may use
  32.      only one of the two versions; 4-byte integer and 8-byte integer library
  33.      calls cannot be mixed.
  34.  
  35. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  36.      If VECT = 'Q', SORMBR overwrites the general real M-by-N matrix C with
  37.      SIDE = 'L' SIDE = 'R' TRANS = 'N': Q * C C * Q TRANS = 'T':      Q**T * C
  38.      C * Q**T
  39.  
  40.      If VECT = 'P', SORMBR overwrites the general real M-by-N matrix C with
  41.                      SIDE = 'L'     SIDE = 'R'
  42.      TRANS = 'N':      P * C          C * P
  43.      TRANS = 'T':      P**T * C       C * P**T
  44.  
  45.      Here Q and P**T are the orthogonal matrices determined by SGEBRD when
  46.      reducing a real matrix A to bidiagonal form: A = Q * B * P**T. Q and P**T
  47.      are defined as products of elementary reflectors H(i) and G(i)
  48.      respectively.
  49.  
  50.      Let nq = m if SIDE = 'L' and nq = n if SIDE = 'R'. Thus nq is the order
  51.      of the orthogonal matrix Q or P**T that is applied.
  52.  
  53.      If VECT = 'Q', A is assumed to have been an NQ-by-K matrix:  if nq >= k,
  54.      Q = H(1) H(2) . . . H(k);
  55.      if nq < k, Q = H(1) H(2) . . . H(nq-1).
  56.  
  57.      If VECT = 'P', A is assumed to have been a K-by-NQ matrix:  if k < nq, P
  58.      = G(1) G(2) . . . G(k);
  59.      if k >= nq, P = G(1) G(2) . . . G(nq-1).
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. SSSSOOOORRRRMMMMBBBBRRRR((((3333SSSS))))                                                          SSSSOOOORRRRMMMMBBBBRRRR((((3333SSSS))))
  71.  
  72.  
  73.  
  74. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  75.      VECT    (input) CHARACTER*1
  76.              = 'Q': apply Q or Q**T;
  77.              = 'P': apply P or P**T.
  78.  
  79.      SIDE    (input) CHARACTER*1
  80.              = 'L': apply Q, Q**T, P or P**T from the Left;
  81.              = 'R': apply Q, Q**T, P or P**T from the Right.
  82.  
  83.      TRANS   (input) CHARACTER*1
  84.              = 'N':  No transpose, apply Q  or P;
  85.              = 'T':  Transpose, apply Q**T or P**T.
  86.  
  87.      M       (input) INTEGER
  88.              The number of rows of the matrix C. M >= 0.
  89.  
  90.      N       (input) INTEGER
  91.              The number of columns of the matrix C. N >= 0.
  92.  
  93.      K       (input) INTEGER
  94.              If VECT = 'Q', the number of columns in the original matrix
  95.              reduced by SGEBRD.  If VECT = 'P', the number of rows in the
  96.              original matrix reduced by SGEBRD.  K >= 0.
  97.  
  98.      A       (input) REAL array, dimension
  99.              (LDA,min(nq,K)) if VECT = 'Q' (LDA,nq)        if VECT = 'P' The
  100.              vectors which define the elementary reflectors H(i) and G(i),
  101.              whose products determine the matrices Q and P, as returned by
  102.              SGEBRD.
  103.  
  104.      LDA     (input) INTEGER
  105.              The leading dimension of the array A.  If VECT = 'Q', LDA >=
  106.              max(1,nq); if VECT = 'P', LDA >= max(1,min(nq,K)).
  107.  
  108.      TAU     (input) REAL array, dimension (min(nq,K))
  109.              TAU(i) must contain the scalar factor of the elementary reflector
  110.              H(i) or G(i) which determines Q or P, as returned by SGEBRD in
  111.              the array argument TAUQ or TAUP.
  112.  
  113.      C       (input/output) REAL array, dimension (LDC,N)
  114.              On entry, the M-by-N matrix C.  On exit, C is overwritten by Q*C
  115.              or Q**T*C or C*Q**T or C*Q or P*C or P**T*C or C*P or C*P**T.
  116.  
  117.      LDC     (input) INTEGER
  118.              The leading dimension of the array C. LDC >= max(1,M).
  119.  
  120.      WORK    (workspace/output) REAL array, dimension (LWORK)
  121.              On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  122.  
  123.      LWORK   (input) INTEGER
  124.              The dimension of the array WORK.  If SIDE = 'L', LWORK >=
  125.              max(1,N); if SIDE = 'R', LWORK >= max(1,M).  For optimum
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. SSSSOOOORRRRMMMMBBBBRRRR((((3333SSSS))))                                                          SSSSOOOORRRRMMMMBBBBRRRR((((3333SSSS))))
  137.  
  138.  
  139.  
  140.              performance LWORK >= N*NB if SIDE = 'L', and LWORK >= M*NB if
  141.              SIDE = 'R', where NB is the optimal blocksize.
  142.  
  143.              If LWORK = -1, then a workspace query is assumed; the routine
  144.              only calculates the optimal size of the WORK array, returns this
  145.              value as the first entry of the WORK array, and no error message
  146.              related to LWORK is issued by XERBLA.
  147.  
  148.      INFO    (output) INTEGER
  149.              = 0:  successful exit
  150.              < 0:  if INFO = -i, the i-th argument had an illegal value
  151.  
  152. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  153.      INTRO_LAPACK(3S), INTRO_SCSL(3S)
  154.  
  155.      This man page is available only online.
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.